home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 3 / Gold Medal Software - Volume 3 (Gold Medal) (1994).iso / graphics / 3dvect30.arj / QB.ARJ / MSTARS.BAS < prev    next >
BASIC Source File  |  1980-01-18  |  4KB  |  186 lines

  1. DECLARE FUNCTION c$ (qq!)
  2. REM This qbasic file will pre-calculate the data needed to make background
  3. REM stars.  The file which uses this calculated data is stars.asm.  If you
  4. REM don't have this assembley file, go to nearest corner of room, hang head
  5. REM and cry.
  6.  
  7. REM to use: qb mstars.bas>stardata.inc
  8.  
  9. REM The data tables are large but it is expected that the asm routine will
  10. REM be fast as a result of the pre-calculated data.
  11.  
  12. REM xa=0 to 1024-1
  13. REM ya=0 to 65536-1
  14.  
  15. REM xl yl zl = xlocation , ylocation...
  16. REM rxa = real x angle (radians)
  17. REM rya = real y angle (rads)
  18. REM t() = theta (y angle,  units: -128 to +127)
  19. REM ya  = theta (y angle,  units: -128 to +127)
  20. REM x1  = x^-1, inverse of where to find x angle in list from rxa
  21. REM xt  = y tolerance at that x angle (255 to 38)
  22.  
  23. n = 1024: REM number of stars, must be 2^x
  24.  
  25. b$ = "         db  "
  26.  
  27. x$ = "sxl      db  "
  28. y$ = "syl      db  "
  29. z$ = "szl      db  "
  30. t$ = "sya      db  "
  31. q$ = "xn1      db  "
  32. g$ = "tol      db  "
  33.  
  34. r$ = ","
  35.  
  36. fi$ = "         if use_half_stars eq no"
  37. ed$ = "         endif"
  38.  
  39. PRINT ";";
  40. RANDOMIZE
  41. PRINT
  42. PRINT "; random stars list"
  43. PRINT
  44.  
  45. DIM x(n), y(n), z(n), t(n), l(n), x1(n), xt(n)
  46.  
  47.  FOR xa = 0 TO n - 1
  48.  
  49.    ya = INT(RND * 65535) - 32767
  50.    rya = ya / 65536 * 3.141592 * 2
  51.  
  52.    rxa = TAN((xa - n / 2) / n * ATN(3.141592 / 2) * 2 - 3.141592)
  53.  
  54.    REM change this tolerance if you change ratiox or xactual or xclipping!!!
  55.    REM note 217 + 38 = 255!!! where 38 is minimum tolerance
  56.    xt = (-SIN(xa * 3.141592 / n) + 1) * 217 + 38
  57.  
  58.    x = 0
  59.    y = 0
  60.    z = 16384 - 1
  61.  
  62.    u = y * COS(rxa) - z * SIN(rxa)
  63.    v = y * SIN(rxa) + z * COS(rxa)
  64.  
  65.    y = u
  66.    z = v
  67.  
  68.    u = x * COS(rya) - z * SIN(rya)
  69.    v = x * SIN(rya) + z * COS(rya)
  70.  
  71.    x = u
  72.    z = v
  73.  
  74.    x(xa) = INT(x / 128)
  75.    y(xa) = -INT(y / 128) - 1
  76.    z(xa) = INT(z / 128)
  77.  
  78.    t(xa) = INT(ya / 256)
  79.    xt(xa) = INT(xt + .99)
  80.  
  81.    REM PRINT x(xa),
  82.    REM PRINT y(xa),
  83.    REM PRINT z(xa),
  84.  
  85.    REM PRINT t(xa),
  86.    REM PRINT rxa,
  87.    REM PRINT rya
  88.  
  89.  NEXT xa
  90.  
  91.  FOR j = 0 TO n - .2 STEP .2
  92.  
  93.    rxa = (TAN((j - n / 2) / n * ATN(3.141592 / 2) * 2 - 3.141592)) / 3.141592 * n + n / 2
  94.    x1(rxa) = INT(j / 4)
  95.  
  96.  NEXT j
  97.  
  98.   REM FOR z = 0 TO n - 1
  99.   REM  PRINT x1(z), z
  100.   REM NEXT z
  101.  
  102. PRINT x$;
  103.  
  104.  FOR z = 0 TO n - 1 STEP 8
  105.  
  106.  
  107.      PRINT c$(x(z)); r$; c$(x(z + 1)); r$; c$(x(z + 2)); r$; c$(x(z + 3)); r$; c$(x(z + 4)); r$;
  108.      PRINT c$(x(z + 5)); r$; c$(x(z + 6)); r$; c$(x(z + 7))
  109.      IF z = 512 THEN PRINT fi$
  110.      IF z < n - 8 THEN PRINT b$;
  111.  
  112.  NEXT z
  113.  
  114. PRINT ed$
  115. PRINT
  116. PRINT y$;
  117.  
  118.  FOR z = 0 TO n - 1 STEP 8
  119.  
  120.      PRINT c$(y(z)); r$; c$(y(z + 1)); r$; c$(y(z + 2)); r$; c$(y(z + 3)); r$; c$(y(z + 4)); r$;
  121.      PRINT c$(y(z + 5)); r$; c$(y(z + 6)); r$; c$(y(z + 7))
  122.      IF z = 512 THEN PRINT fi$
  123.      IF z < n - 8 THEN PRINT b$;
  124.  
  125.  NEXT z
  126.  
  127. PRINT ed$
  128. PRINT
  129. PRINT z$;
  130.  
  131.  FOR z = 0 TO n - 1 STEP 8
  132.  
  133.      PRINT c$(z(z)); r$; c$(z(z + 1)); r$; c$(z(z + 2)); r$; c$(z(z + 3)); r$; c$(z(z + 4)); r$;
  134.      PRINT c$(z(z + 5)); r$; c$(z(z + 6)); r$; c$(z(z + 7))
  135.      IF z = 512 THEN PRINT fi$
  136.      IF z < n - 8 THEN PRINT b$;
  137.  
  138.  NEXT z
  139.  
  140. PRINT ed$
  141. PRINT
  142. PRINT t$;
  143.  
  144.  FOR z = 0 TO n - 1 STEP 8
  145.  
  146.      PRINT c$(t(z)); r$; c$(t(z + 1)); r$; c$(t(z + 2)); r$; c$(t(z + 3)); r$; c$(t(z + 4)); r$;
  147.      PRINT c$(t(z + 5)); r$; c$(t(z + 6)); r$; c$(t(z + 7))
  148.      IF z = 512 THEN PRINT fi$
  149.      IF z < n - 8 THEN PRINT b$;
  150.  
  151.  NEXT z
  152.  
  153. PRINT ed$
  154. PRINT
  155. PRINT q$;
  156.  
  157.  FOR z = 0 TO n - 1 STEP 8
  158.  
  159.      PRINT c$(x1(z)); r$; c$(x1(z + 1)); r$; c$(x1(z + 2)); r$; c$(x1(z + 3)); r$; c$(x1(z + 4)); r$;
  160.      PRINT c$(x1(z + 5)); r$; c$(x1(z + 6)); r$; c$(x1(z + 7))
  161.      IF z < n - 8 THEN PRINT b$;
  162.  
  163.  NEXT z
  164.  
  165. PRINT
  166. PRINT g$;
  167.  
  168.  FOR z = 0 TO n - 1 STEP 8
  169.  
  170.      PRINT c$(xt(z)); r$; c$(xt(z + 1)); r$; c$(xt(z + 2)); r$; c$(xt(z + 3)); r$; c$(xt(z + 4)); r$;
  171.      PRINT c$(xt(z + 5)); r$; c$(xt(z + 6)); r$; c$(xt(z + 7))
  172.      IF z = 512 THEN PRINT fi$
  173.      IF z < n - 8 THEN PRINT b$;
  174.  
  175.  NEXT z
  176.  
  177. PRINT ed$
  178. PRINT
  179.  
  180. FUNCTION c$ (qq)
  181.  
  182.  c$ = LTRIM$(RTRIM$(STR$(qq)))
  183.  
  184. END FUNCTION
  185.  
  186.